草庐IT

c++ - QML Qt openUrlExternally

全部标签

php - 使用 zeromq 实现 Task Farm 消息传递模式

我正在使用zeromq解决涉及数百(可能数千)个客户端请求任务的问题。每个客户端都会请求执行特定任务,完成后,结果将返回给发出该请求的客户端。这些是我到目前为止已经确定的Actor,在我想出的模式中:客户:这是请求执行工作单元(或“工作”)的参与者Controller:这是在可用引擎之间平衡“作业”的角色引擎:这是从Controller接收作业请求并将结果发布回客户端的参与者。我还没有弄清楚引擎如何将消息返回给客户端。我猜想使用zeromq实现它的一种方法是:Client:PUSHjobmessagesononesockettoControllerSUBscribetocomplete

c++ - 我在哪里可以找到涵盖 K&R1/2、C89-C1X 及其来源的 C(和/或 C++)关键字列表?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我接触过许多编码指南,每一个指南都给出了命名“事物”的指南。一个特定的C89命名规则引发了这个问题:明确禁止对变量使用名称“new”,因为在C++中这是一个关键字。这让我开始考虑下一个标准,C99有很好的文档记录,但C11相对较新(20

c++ - 任何程序都会检测到 C/C++ 结构中的缓冲区溢出吗?

考虑以下程序:structabc{intx[5];inty[5];};intmain(){structabctest;test.y[0]=10;printf("%d",test.x[5]);}(借自Isitlegaltooverrunoneelementofastructtoviewanother?)BoundsChecker不会将此检测为溢出。是否有任何程序可以检测此类编程错误? 最佳答案 clang确实如此,即使没有打开特殊标志:$clangexample.c-oexampleexample.c:13:18:warning:ar

c++ - 将 fpos_t 转换为 int 或 char

我正在使用一个对文件长度使用位运算的函数:fpos_tflen;当我尝试将其转换为int或char,或尝试对其进行算术运算时,它失败并出现以下编译错误:错误:在需要整数的地方使用了聚合值 最佳答案 您在滥用该类型。首先,它不代表长度。它代表一个位置。其次,它仅用于调用fsetpos。您不打算对其进行算术运算,因为它不一定代表数字类型。它包含您的库执行fsetpos操作所需的任何信息。在您的库的实现中,fpos_t似乎是一种聚合类型,例如结构。(您可以检查头文件中的定义以确保确定,但不要依赖您在那里发现的任何内容;它可能会在其他平台或

c# - IDE 条件 block 突出显示

设置:假设我有一个相当大的程序,并且正在使用#defines和各种包含/排除各种代码片段的方法。即假设我有一段这样的代码example_file.c:include#ifdefTHISdosomethingreallycoolhere#ifdefTHATdosomethingevencooler#endif#endif定义文件.c:#defineTHATTRUE#defineTHISFALSE现在我不知道这两个语句是否会被包含或使用,除非我查看定义。上面是一个简单的示例,但假设您有50个ifdef,并且它们以不同的方式嵌套,要追踪这50个值中的每一个值是什么有点麻烦。问题:是否存在一个

c++ - 在 C++ 中初始化 C 结构

我正在创建一堆C结构,因此我可以封装要通过dllc接口(interface)传递的数据。这些结构有很多成员,我希望它们有默认值,这样就可以只指定少数几个成员来创建它们。据我了解,结构需要保持C风格,因此不能包含构造函数。创建它们的最佳方法是什么?我在想工厂? 最佳答案 structFoo{staticFoomake_default();};工厂是矫枉过正。当您想要创建给定接口(interface)的实例时使用它,但实现的运行时类型在创建站点上不是静态已知的。 关于c++-在C++中初始化

c++ - 从类返回指针。谁负责删除?

我有一个实现二进制兼容接口(interface)(用作共享库)的C++类,因此只返回C类型。作为constchar*的字符串、void指针和指向具有二进制兼容接口(interface)的其他类的指针。问题是我应该如何组织内存管理,我应该返回指向现有类数据的常量指针(用户使用过时指针的危险),然后自己释放内存,或者指向一些堆变量的指针并让用户负责删除这些指针后来,还是???是否有一些通用准则? 最佳答案 在“二进制兼容接口(interface)”中,使用C接口(interface),您不假设共享堆。因此,从堆中分配内存的一方是将其返回

c++ - Ubuntu 11.10 链接 perftools 库

我无法让Ubuntu11.10中的gcc在googleperftools-lprofiler中正确链接。问题似乎是链接器丢弃了程序中未直接使用的库。一个例子会有所帮助。我们称它为main.cpp:#includeintmain(){doublevalue;for(inti=0;i编译使用:g++-cmain.cpp-omain.og++main.o-omain-lm-lprofiler使用ldd./main检查可执行文件:linux-vdso.so.1=>(0x00007fff5a9ff000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x0

c++ - 找到巨大的已分配内存块

我有一个用c/c++编写的程序(守护进程)。它运行完美,但在一段时间后(可能是5天、一周、2周),它会分配大量内存。我不明白代码的哪些部分没有释放分配的内存。启动时内存使用量约为20-30兆字节。然后在一段时间后,或者可能发生事件后,它会以每小时1Mb的速度缓慢增长,如果不终止,可能会因为没有可用内存而崩溃。我已经尝试使用Valgrind并在它已经分配了大约500Mb的内存时以通常的方式关闭了守护进程。关机过程真的很长,但是当它结束时,Valgrind说没有发现内存泄漏,除了mysql_init/mysql_close程序(大约504字节肯定丢失)。Google表示无需担心此Mysql

c++ - _IO_wide_data_2 : what's this?

我在嵌入式平台上工作(架构是SH4),几分钟前我的程序因SIGABRT而崩溃。幸运的是,我在gdbserver下运行,被这个信号中断的线程有这个堆栈转储:#00x2a7f1678inraise()from/home/[user]/target/lib/libc.so.6#10x2a7f2a4cinabort()from/home/[user]/target/lib/libc.so.6#20x2a81ade0in__libc_message()from/home/[user]/target/lib/libc.so.6#30x2a81f3a8inmalloc_printerr()from/